import type { showDetail } from './interface';
import { PropType } from 'vue';
export const propsOpts = {
  /**
   * 这里是动态返回时间戳。这是一个标准的时间，不管showDetail是如何设置都将不影响这里的输出。
   * 并且fomart不会影响这里的双向绑定。只会影响model-str
   */
  modelValue: {
    type: [Number, String, Date],
    default: ''
  },
  //这里和modelValue不一样，它只代表格式化输出显示，因此这里可能并不是一个有效的时间值。
  /**
   * 比如:format为"MM/DD",那这里就会显示12/10这样的时间格式，因此并不是一个正确的时间，
   * 这里主要是为了方便表单上页面的显示控制输入。如果真要保存到数据库，你应该保存modelValue的值。
   */
  modelStr: {
    type: [String],
    default: ''
  },
  defaultValue: {
    type: [Number, String, Date],
    default: ''
  },
  //禁用的部分日期，禁用的日期将不会被选中，就算滑到了该位置，也会回弹到之前的时间。
  /**
   * 现在暂时只禁用到天，也就是一个时间到天这如果==下面的禁用日期，就会选不中。
   */
  disabledDate: {
    type: Array as PropType<Array<Number | String | Date>>,
    default: (): Array<Number | String | Date> => []
  },
  //展示格式。最终影响到modelStr输出格式的内容。
  format: {
    type: String,
    default: 'YYYY/MM/DD HH:mm:ss'
  },
  immediateChange: {
    type: Boolean,
    default: false
  },
  //需要展现的时间格式类型
  showDetail: {
    type: Object as PropType<showDetail>,
    default: () => {
      return {
        year: true,
        month: true,
        day: true,
        hour: false,
        minute: false,
        second: false
      };
    }
  },
  //日期的后缀，
  showSuffix: {
    type: Object,
    default: () => {
      return {
        year: '年',
        month: '月',
        day: '日',
        hour: '时',
        minute: '分',
        second: '秒'
      };
    }
  },
  start: {
    type: [Number, String, Date],
    default: '2008/01/01 00:00:00'
  },
  end: {
    type: [Number, String, Date],
    default: ''
  },
  height: {
    type: Number,
    default: 300
  }
};
